package com.ts.api.module.match.plan.handler;

import com.gitee.apanlh.util.base.Empty;
import com.gitee.apanlh.util.valid.ValidParam;
import com.ts.api.common.redis.Md5DataFilterRedisKey;
import com.ts.api.module.api.entity.ApiUserRequest;
import com.ts.api.module.match.plan.internal.distribute.model.PlanDistributeResult;
import com.ts.api.module.match.plan.model.PlanMatchProcess;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 *  计划匹配失败处理器
 *
 *  @author Pan
 */
@Component
public class ApiPlanMatchProcessFailureHandler {

    /**
     *  API渠道-计划分发失败重置md5过滤状态
     *  计划匹配失败后执行动作
     *
     *  @param  planMatchProcess   计划匹配数据模型实体
     *  @return PlanDistributeResult
     */
    public PlanDistributeResult handleFailure(PlanMatchProcess planMatchProcess) {
        ApiUserRequest sourceApiUserRequest = planMatchProcess.getSourceApiUserRequest();

        //  存在MD5模式时才会重置过滤状态
        String phoneMd5 = sourceApiUserRequest.getPhoneMd5();
        if (ValidParam.isNotEmpty(phoneMd5)) {
            Md5DataFilterRedisKey.MD5_EXIST_FILTER.setForSeconds(phoneMd5, false, 10);
        }
        return PlanDistributeResult.ofFail("无计划分发列表");
    }

    /**
     *  计划匹配失败后执行动作
     *
     *  @param  planMatchProcess   计划匹配数据模型实体
     *  @return PlanDistributeResult
     */
    public List<PlanDistributeResult> handlePhoneMaskFailure(PlanMatchProcess planMatchProcess) {
        return Empty.list();
    }
}
